#include<iostream>
#include<fstream>
#include"1.pb.h"
using namespace std;
void AddPeopleInfo(contacts::PeopleInfo*people)
{
    cout << "-------------新增联系人-------------" << endl;
    cout << "请输入联系人姓名: ";
    string name;
    getline(cin, name);
    people->set_name(name);
    cout << "请输入联系人年龄: ";
    int age;
    cin >> age;
    people->set_age(age);
    cin.ignore(256, '\n');
    for(int i = 1; ; i++) {
        cout << "请输入联系人电话" << i << "(只输入回车完成电话新增): ";
        string number;
        getline(cin, number);
        if (number.empty()) {
            break;
            }
        contacts::PeopleInfo_Phone*phone=people->add_phone();
        phone->set_number(number);
        cout<<"请输入电话类型(1.移动电话   2.固定电话): ";
        int type;
        cin>>type;
        cin.ignore(256,'\n');
        switch(type)
        {
            case 1:
                phone->set_type(contacts::PeopleInfo_Phone_PhoneType::PeopleInfo_Phone_PhoneType_MP);
                break;
            case 2:
                phone->set_type(contacts::PeopleInfo_Phone_PhoneType::PeopleInfo_Phone_PhoneType_TEL);
                break;
            default:
                cout<<"选择有误";
                break;
        }
    }
    contacts::Address address;
    cout<<"请输入联系人家庭地址: ";
    string home_address;
    getline(cin,home_address);
    address.set_home_address(home_address);
    cout<<"请输入联系人单位地址: ";
    string unit_address;
    getline(cin,unit_address);
    address.set_unit_address(unit_address);
    people->mutable_data()->PackFrom(address);
    cout << "-----------添加联系人成功-----------" << endl;
}
int main()
{
    contacts::Contacts contacts;
    fstream input("1.bin",ios::in | ios::binary); 
    if(!input)
    {
        cout<<"1.bin not find,create new file"<<endl;
    }
    else if(!contacts.ParseFromIstream(&input))
    {
        cerr<<"parse error!"<<endl;
        input.close();
        return -1;
    }
    AddPeopleInfo(contacts.add_contacts());
    fstream output("1.bin",ios::out | ios::trunc | ios::binary);
    if(!contacts.SerializeToOstream(&output))
    {
        cerr<<"write error!"<<endl;
        input.close();
        output.close();
        return -1;
    }
    cout<<"write success"<<endl;
    input.close();
    output.close();
    return 0;

}